package com.health.db.service.sm;

import com.health.pay.tencent.protocol.closeorder.CloseOrderReqData;
import com.health.pay.tencent.protocol.closeorder.CloseOrderResData;
import com.health.pay.tencent.protocol.orderquery.OrderQueryReqData;
import com.health.pay.tencent.protocol.orderquery.OrderQueryResData;
import com.health.pay.tencent.protocol.refund.RefundReqData;
import com.health.pay.tencent.protocol.refund.RefundResData;
import com.health.pay.tencent.protocol.transfers.TransfersReq;
import com.health.pay.tencent.protocol.transfers.TransfersResp;
import com.health.pay.tencent.protocol.unifiedorder.UnifiedorderResData;
import com.sun.istack.internal.NotNull;

public interface IWXPayService {

	/**
	 * APP统一下单
	 * */
	UnifiedorderResData unifiedorder(String deviceInfo, @NotNull String body, String detail,
			String attach, @NotNull String outTradeNo,
			@NotNull String totalFee,
			String timeStart, String timeExpire,
			String limitPay)
			throws Exception;

	/***
	 * 微信浏览器H5统一下单
	 * */
	UnifiedorderResData unifiedH5order(String deviceInfo, @NotNull String body, String detail,
									 String attach, @NotNull String outTradeNo,
									 @NotNull String totalFee,String spbillCreateIp,
									 String timeStart, String timeExpire,
									 String limitPay,String sceneInfo)
			throws Exception;
	UnifiedorderResData unifiedMPorder(String deviceInfo,
									   @NotNull String body,
									   String detail,
									   String attach,
									   String outTradeNo,
									   String totalFee,
									   String spbillCreateIp,
									   String time_start,
									   String timeExpire,
									   String limit_pay,
									   String openid,
									   String sceneInfo)throws Exception;
	/***
	 * 微信小程序统一下单
	 */
	public UnifiedorderResData unifiedMiNiProgramorder(String deviceInfo, @NotNull String body, String detail,
			   String attach, @NotNull String outTradeNo,
			   @NotNull String totalFee,String spbillCreateIp,
			   String timeStart, String timeExpire,
			   String limitPay,String openId)throws Exception;
	/**
	 * 订单退款
	 * */
	RefundResData refund(RefundReqData refundReqData) throws Exception;

	/**
	 * 关闭订单
	 * */
	CloseOrderResData closeOrder(CloseOrderReqData closeOrderReqData)
			throws Exception;

	/**
	 * 查询订单
	 * */
	OrderQueryResData queryOrder(OrderQueryReqData orderQueryReqData)
			throws Exception;
	
	/**
	 * 企业付款
	 * @param transfersReq
	 * @return
	 */
	TransfersResp transfers (TransfersReq transfersReq)	throws Exception;
	
}
